import { Card, Color } from "../card";
import { PlusOneHourse, MinusOneHourse, Chitu, DaWan, DiLu, HuaLiu, JueYing, ZhuaHuangFeiDian, ZiXing } from "./horses"; 
import { Shield, BaGuaZhen, Baiyinshizi, Renwangdun, Tengjia } from "./shields";
import { CiXiongShuangGuJian, FangTianHuaJi, GuanShiFu, GuDingDao, HanBingJian, QiLinGong, QingGangJian, QingLongYanYueDao, SanJianLiangRenDao, ZhuGeLianLu, ZhuQueYuShan } from "./weapons";

type CardCreator = () => Card
const EquipmentCardCreator = new Map<string, CardCreator>()

EquipmentCardCreator.set(ZhuaHuangFeiDian.name, () => new ZhuaHuangFeiDian(Color.HEART, 13))
EquipmentCardCreator.set(JueYing.name, () => new JueYing(Color.SPADE, 5))
EquipmentCardCreator.set(DiLu.name, () => new DiLu(Color.CLUB, 5))
EquipmentCardCreator.set(Chitu.name, () => new Chitu(Color.HEART, 5))
EquipmentCardCreator.set(ZiXing.name, () => new ZiXing(Color.DIAMOND, 13))
EquipmentCardCreator.set(DaWan.name, () => new DaWan(Color.SPADE, 13))
EquipmentCardCreator.set(HuaLiu.name, () => new HuaLiu(Color.DIAMOND, 13))

EquipmentCardCreator.set(CiXiongShuangGuJian.name, () => new CiXiongShuangGuJian(Color.SPADE, 2))
EquipmentCardCreator.set(FangTianHuaJi.name, () => new FangTianHuaJi(Color.DIAMOND, 12))
EquipmentCardCreator.set(GuDingDao.name, () => new GuDingDao(Color.SPADE, 1))
EquipmentCardCreator.set(GuanShiFu.name, () => new GuanShiFu(Color.DIAMOND, 5))
EquipmentCardCreator.set(HanBingJian.name, () => new HanBingJian(Color.SPADE, 2))
EquipmentCardCreator.set(QingGangJian.name, () => new QingGangJian(Color.SPADE, 6))
EquipmentCardCreator.set(QiLinGong.name, () => new QiLinGong(Color.HEART, 5))
EquipmentCardCreator.set(QingLongYanYueDao.name, () => new QingLongYanYueDao(Color.SPADE, 5))
EquipmentCardCreator.set(SanJianLiangRenDao.name, () => new SanJianLiangRenDao(Color.DIAMOND, 12))
EquipmentCardCreator.set(ZhuGeLianLu.name + 'DIAMOND', () => new ZhuGeLianLu(Color.DIAMOND, 1))
EquipmentCardCreator.set(ZhuGeLianLu.name + 'CLUB', () => new ZhuGeLianLu(Color.CLUB, 1))
EquipmentCardCreator.set(ZhuQueYuShan.name, () => new ZhuQueYuShan(Color.DIAMOND, 1))
EquipmentCardCreator.set(Renwangdun.name, () => new Renwangdun(Color.CLUB, 2))
EquipmentCardCreator.set(Baiyinshizi.name, () => new Baiyinshizi(Color.CLUB, 1))
EquipmentCardCreator.set(Tengjia.name + "1", () => new Tengjia(Color.CLUB, 1))
EquipmentCardCreator.set(Tengjia.name + "2", () => new Tengjia(Color.SPADE, 2))
EquipmentCardCreator.set(BaGuaZhen.name + "1", () => new BaGuaZhen(Color.SPADE, 2))
EquipmentCardCreator.set(BaGuaZhen.name + "2", () => new BaGuaZhen(Color.CLUB, 2))

export default {
    EquipmentCardCreator,
    Chitu, DaWan, DiLu, HuaLiu, JueYing, ZhuaHuangFeiDian, ZiXing,
    Shield, BaGuaZhen, Baiyinshizi, Renwangdun, Tengjia,
    CiXiongShuangGuJian, FangTianHuaJi, GuDingDao, GuanShiFu, HanBingJian, QiLinGong, QingLongYanYueDao, SanJianLiangRenDao,
    ZhuGeLianLu, ZhuQueYuShan, QingGangJian
}
